package estructuras.common;

import java.util.*;


public abstract class EspacioConCapacidadMutable {
	TreeMap<Fecha, Integer> cambiosCapacidad = new TreeMap<Fecha, Integer>();
	
	static final Fecha fechaCero = new Fecha(0, 0);
	// Retorna falso si ya existia un cambio para dicha fecha (dia y hora), en tal caso no actualiza nada.
		// En caso contrario, almacena el cambio.
		public boolean addCambioDeCapacidad(int capacidad, Fecha fechaCambio){
			if(cambiosCapacidad.containsKey(fechaCambio)) return false; 
			cambiosCapacidad.put(fechaCambio, capacidad);
			return true;
		}
		public boolean addCambioDeCapacidad(int capacidad){
			return addCambioDeCapacidad(capacidad, fechaCero);
		}
		
		public int getCapacidadEnInstanteDeTiempo(Fecha fecha){
			Map.Entry<Fecha, Integer> cambio = this.cambiosCapacidad.floorEntry(fecha);
			if(cambio == null) return 0;
			return cambio.getValue();
		}
}
